package com.glodon.paas.document.biz;

import java.util.List;

import com.glodon.paas.document.dao.domain.FileInfoEntity;
import com.glodon.paas.document.dao.domain.LockEntity;

public interface FileBiz {

    // for file

    String getFileId(String fileId, String path, Integer[] status);

    String getPath(FileInfoEntity file);

    FileInfoEntity getFile(String fileId);

    FileInfoEntity getNormalFile(String fileId);

    FileInfoEntity getDeletedFile(String fileId);
    
    FileInfoEntity getFileWithFolderCount(String fileId);

    FileInfoEntity getFile(String parentId, String name, Integer[] status, Integer[] types);

    List<FileInfoEntity> getExpiredFiles(String ownerId, int nDays, int limited);

    List<FileInfoEntity> getDeletedFiles(String userId);

    LockEntity getLock(String lockId);

    List<FileInfoEntity> getFiles(String parentId, String name, Integer[] status, Integer[] types);

    List<FileInfoEntity> getParents(FileInfoEntity file);

    long getUsedSpace(String userId);

    void insertFile(FileInfoEntity file);

    void updateFileName(String fileId, String newName, String updator);

    FileInfoEntity shareFile(String fileId);

    void cancelShare(String fileId);

    void publishFile(String fileId);

    void cancelPublish(String fileId);

    void updateParent(FileInfoEntity file, String parentId);

    List<String> restore(String fileId);

    void removeFile(String fileId);

    void deleteFile(String fileId);

    void deleteExpiredFile(FileInfoEntity file);

    boolean isFolderExist(String fileId, String folderName);

    boolean isDocExist(String fileId, String fullName);

    LockEntity lockFile(String userId, String fileId);

    void unlockFile(String lockId);

    // /**
    // * 获取目录下文件列表
    // *
    // * @param ownerId 所有者
    // * @param fileId 目录id
    // * @param type 文件类型，1文件夹，2文件，null所有
    // * @param deletedStatus 文件状态
    // * @param orderProperty 排序字段
    // * @param orderType 排序方式1升序，2降序，其他不排序
    // * @param startIndex
    // * @param count
    // * @return
    // */
    // List<FileInfoEntity> getFileByParentId(
    // String ownerId,
    // String parentId,
    // Integer type,
    // Integer deletedStatus,
    // String orderBy,
    // Integer orderType,
    // Integer startIndex,
    // Integer count);
    void updateUpdator(String fileId, String userId);
}
